home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 4.4 KB | 196 lines |
- 10 ' N O T E N O T E N O T E N O T E
- 20 '
- 30 ' See important comments at the end of this program.
- 40 '
- 50 KEY OFF
- 60 DIM SCRN%(8,4)
- 70 SCREEN 0,0
- 80 LOCATE 1,1,0
- 90 GOSUB 1080 'INITIALIZE ARRAY
- 100 GOSUB 760 'PRINT MENU ON SCREEN
- 110 GOSUB 1390 'GO ASK USER WHAT HE WANTS TO DO
- 120 GOSUB 1790 'GO SEE WHAT HE SAID TO DO
- 130 GOSUB 1580 'SWITCH TO COLOR DISPLAY
- 140 GOSUB 670
- 150 IF SCRN%(7,2)>1 THEN SCREEN 1,1 ELSE SCREEN 1,0
- 160 IF SCRN%(5,2)>1 THEN COLOR 0,CINT(RND) ELSE COLOR CINT(RND * 15),CINT(RND)
- 170 CLS
- 180 '
- 190 '
- 200 X1=(RND * 50)+1
- 210 X2=(RND * 50)+1
- 220 Y1=RND * X1
- 230 Y2=RND * X2
- 240 GOTO 360
- 250 '
- 260 IF INT(RND * 11) = 5 THEN GOSUB 670
- 270 CC$=INKEY$
- 280 IF LEN(CC$)=0 THEN 310
- 290 IF CC$=CHR$(27) THEN GOSUB 1680: GOTO 100
- 300 IF CC$=" " THEN 160
- 310 IF INT(RND * 250) = 125 THEN 160
- 320 X1=(X1+XX) MOD 110
- 330 Y1=(Y1+YX) MOD 110
- 340 X2=(X2+XY) MOD 110
- 350 Y2=(Y2+YY) MOD 110
- 360 Y1=-Y1
- 370 Y2=-Y2
- 380 GOSUB 510
- 390 X1=-X1
- 400 X2=-X2
- 410 GOSUB 510
- 420 Y1=-Y1
- 430 Y2=-Y2
- 440 GOSUB 510
- 450 X1=-X1
- 460 X2=-X2
- 470 GOSUB 510
- 480 GOTO 260
- 490 '
- 500 '
- 510 ON I% GOTO 520,560,590,630
- 520 LINE((X1+100)*35/24,Y1+100)-((X2+100)*35/24,Y2+100),CO
- 530 LINE((Y1+100)*35/24,X1+100)-((Y2+100)*35/24,X2+100),CO
- 540 RETURN
- 550 '
- 560 LINE((X1+100)*35/24,Y1+100)-((X2+100)*35/24,Y2+100),CO,B
- 570 RETURN
- 580 '
- 590 LINE((X1+100)*35/24,Y1+100)-((X2+100)*35/24,Y2+100),CO
- 600 LINE((Y1+100)*35/24,X1+100)-((Y2+100)*35/24,X2+100),CO,B
- 610 RETURN
- 620 '
- 630 CIRCLE (X1+150,Y1+100),ABS(X2),CO
- 640 RETURN
- 650 '
- 660 '
- 670 XX=(RND * 11)-5
- 680 XY=(RND * 11)-5
- 690 YX=(RND * 11)-5
- 700 YY=(RND * 11)-5
- 710 CO=CINT(RND *3)
- 720 RANDOMIZE(VAL(RIGHT$(TIME$,2)))
- 730 RETURN
- 740 '
- 750 '
- 760 VL$=CHR$(179)
- 770 HL$=CHR$(196)
- 780 UR$=CHR$(191)
- 790 LR$=CHR$(217)
- 800 UL$=CHR$(218)
- 810 LL$=CHR$(192)
- 820 CLS
- 830 LOCATE ,,0
- 840 PRINT TAB(15) "KALEIDOSCOPE"
- 850 LOCATE 4
- 860 PRINT "Foreground" TAB(15) UL$ "Lines" TAB(35) UR$
- 870 PRINT TAB(15) VL$ "Boxes" TAB(35) VL$
- 880 PRINT TAB(15) VL$ "Lines and Boxes" TAB(35) VL$
- 890 PRINT TAB(15) LL$ "Circles" TAB(35) LR$
- 900 LOCATE 10
- 910 PRINT "Background" TAB(15) UL$ "Random Color" TAB(32) UR$
- 920 PRINT TAB(15) LL$ "Black" TAB(32) LR$
- 930 LOCATE 14
- 940 PRINT "Mode" TAB(15) UL$ "Color" TAB(33) UR$
- 950 PRINT TAB(15) LL$ "Black & White" TAB(33) LR$
- 960 LOCATE 18
- 970 PRINT "Select one from each group"
- 980 PRINT "Move cursor with RETURN key"
- 990 PRINT "Press SPACE to execute KALEIDOSCOPE"
- 1000 PRINT "Press ESC to EXIT"
- 1010 LOCATE 24,1
- 1020 PRINT "While running, SPACE bar will restart";
- 1030 LOCATE 25,1
- 1040 PRINT "ESC will return to this menu";
- 1050 RETURN
- 1060 '<UNK! {FF00}>P6.<UNK! {0004}>'
- 1080 FOR I%=0 TO 3
- 1090 FOR J%=0 TO 7
- 1100 READ SCRN%(J%,I%)
- 1110 NEXT J%,I%
- 1120 RETURN
- 1130 '
- 1140 '
- 1150 FOR I%=0 TO 7
- 1160 LOCATE SCRN%(I%,0),SCRN%(I%,1)
- 1170 IF SCRN%(I%,2)=0 THEN PRINT " "
- 1180 IF SCRN%(I%,2)=1 THEN COLOR 0,7: PRINT " ": COLOR 7,0
- 1190 IF SCRN%(I%,2)=2 THEN COLOR 0,7: PRINT "X": COLOR 7,0
- 1200 IF SCRN%(I%,2)=3 THEN PRINT "X"
- 1210 NEXT I%
- 1220 RETURN
- 1230 '
- 1240 '
- 1250 IF SCRN%(CURS%,2)=1 THEN SCRN%(CURS%,2)=0 ELSE SCRN%(CURS%,2)=3
- 1260 CURS%=CURS%+1
- 1270 IF CURS%=8 THEN CURS%=0
- 1280 IF SCRN%(CURS%,2)=0 THEN SCRN%(CURS%,2)=1 ELSE SCRN%(CURS%,2)=2
- 1290 RETURN
- 1300 '
- 1310 '
- 1320 FOR I%=0 TO 7
- 1330 IF SCRN%(I%,3)=SCRN%(CURS%,3) THEN SCRN%(I%,2)=0
- 1340 NEXT I%
- 1350 SCRN%(CURS%,2)=2
- 1360 RETURN
- 1370 '
- 1380 '
- 1390 GOSUB 1150
- 1400 CC$=""
- 1410 WHILE LEN(CC$)<>1
- 1420 CC$=INKEY$
- 1430 WEND
- 1440 IF CC$=CHR$(13) THEN GOSUB 1250: GOSUB 1150
- 1450 IF (CC$="x") OR (CC$="X") THEN GOSUB 1320: GOSUB 1150
- 1460 'IF NO MONOCHROME DISPLAY CHANGE LOCATE ,,1,12,13 TO LOCATE ,,1,7 *****
- 1470 IF CC$=CHR$(27) THEN GOSUB 1680:KEY ON:LOCATE ,,1,12,13:CLS:CHAIN "MENU",1000
- 1480 IF CC$=" " THEN RETURN
- 1490 GOTO 1390
- 1500 '
- 1510 '
- 1520 DATA 4,5,6,7,10,11,14,15
- 1530 DATA 22,22,32,24,29,22,22,30
- 1540 DATA 2,0,0,0,3,0,3,0
- 1550 DATA 1,1,1,1,2,2,3,3
- 1560 '
- 1570 '
- 1580 'RETURN 'ACTIVATE THIS STATEMENT IF NO MONOCHROME DISPLAY
- 1590 DEF SEG=&H41
- 1600 POKE 0,(PEEK(0) AND &HCF) OR &H20
- 1610 DEF SEG
- 1620 SCREEN 0
- 1630 WIDTH 40
- 1640 SCREEN 1,0
- 1650 RETURN
- 1660 '
- 1670 '
- 1680 'SCREEN 0,0 'ACTIVATE THIS STATEMENT IF NO MONOCHROME DISPLAT
- 1690 'RETURN 'ACTIVATE THIS STATEMENT IF NO MONOCHROME DISPLAY
- 1700 DEF SEG=&H41
- 1710 POKE 0,(PEEK(0) OR &H30)
- 1720 DEF SEG
- 1730 SCREEN 0
- 1740 WIDTH 80
- 1750 LOCATE 1,1,0
- 1760 RETURN
- 1770 '
- 1780 '
- 1790 IF SCRN%(0,2)>1 THEN I%=1
- 1800 IF SCRN%(1,2)>1 THEN I%=2
- 1810 IF SCRN%(2,2)>1 THEN I%=3
- 1820 IF SCRN%(3,2)>1 THEN I%=4
- 1830 RETURN
- 1840 ' N O T E N O T E
- 1850 'Activate/deactivate statements commented above depending on whether
- 1860 'or not you have a monochrome display. The statement numbers are
- 1870 'listed below in an ON statement incase someone renumbers this thing.
- 1880 ON I% GOTO 1460,1580,1680,1690
- 1890 '
- 1900 'If from time to time it appears that the program is not working, it may b
- 1910 'that it is painting with the same color as the background.
- 1920 '
- 1930 'Feel free to copy this program and pass it on to a friend, lover, etc.,
- 1950 'copy it, please add your name to the bottom of the list below.
- 1970 ' Bill Decker 4 Sherwood Dr. Endicott, N. Y. 13760
- 1980 ' Barry Shiffrin 2309 Acorn Dr. Vestal, NY 13850
-